const CompressionWebpackPlugin = require('compression-webpack-plugin')
// const Timestamp = new Date().getTime();
// 拼接路径
const resolve = dir => require('path').join(__dirname, dir)

// 基础路径 注意发布之前要先修改这里
const publicPath = process.env.VUE_APP_PUBLIC_PATH || '/'

// 设置不参与构建的库
const externals = {}


module.exports = {
  // 根据你的实际情况更改这里
  runtimeCompiler: true,

  publicPath,
  lintOnSave: true,
  // devServer: {
  //   publicPath, // 和 publicPath 保持一致
  //   disableHostCheck: process.env.NODE_ENV === 'development',
  //   /* 配置代理 */
  //   port: 8080,
  //   proxy: {
  //     '/api': { 
  //       target: 'http://10.10.31.143:8080', //对应自己的接口
  //       changeOrigin: true, //是否跨域
  //       ws: true,
  //       pathRewrite: {
  //         '^/api': '',
  //     },
  //     }
  //   }
  // },
  css: {
    loaderOptions: {
      // 设置 scss 公用变量文件

    }
  },
  // 配置跨域
  devServer: {
    hot: true, // 开启热加载
    open: false,
    // proxy:{ // 设置代理解决跨域
    //     '/devApi':{
    //         target:"http://10.10.31.143:8080/", // api服务器地址
    //         ws: true,
    //         changeOrigin:true,
    //         pathRewrite:{
    //             '^/devApi': ''
    //         }
    //     }
    // },
  },
  configureWebpack: (config) => {
    const configNew = {}
    if (process.env.NODE_ENV === 'production') {
      // configNew.output = { // 输出重构  打包编译后的 文件名称  【模块名称.版本号.时间戳】
      //   filename: `[name].${Timestamp}.js`,
      //   chunkFilename: `[name].${Timestamp}.js`
      // }
      configNew.externals = externals
      configNew.plugins = [
        // gzip
        new CompressionWebpackPlugin({
          filename: '[path].gz[query]',
          test: new RegExp('\\.(' + ['js', 'css'].join('|') + ')$'),
          threshold: 10240,
          minRatio: 0.8,
          deleteOriginalAssets: false
        })
      ]
    }
    config.externals = {
      'AMap': 'AMap' // 高德地图配置
    }
    return configNew
  },
  // 默认设置:
  chainWebpack: config => {

    /**
     * 删除懒加载模块的 prefetch preload，降低带宽压力
     */
    config.plugins
      .delete('prefetch')
      .delete('preload')
    // 解决 cli3 热更新失效
    config.resolve
      .symlinks(true)

    // svg
    const svgRule = config.module.rule('svg')
    svgRule.uses.clear()
    svgRule
      .include
      .add(resolve('src/assets/svg-icons/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: '[name]'
      })
      .end()
    // image exclude
    const imagesRule = config.module.rule('images')
    imagesRule
      .test(/\.(png|jpe?g|gif|webp|svg)(\?.*)?$/)
      .exclude
      .add(resolve('src/assets/svg-icons/icons'))
      .end()
    // 重新设置 alias
    config.resolve.alias
      .set('@api', resolve('src/api'))
    // 分析工具
    if (process.env.npm_config_report) {
      config
        .plugin('webpack-bundle-analyzer')
        .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
    }
  },
  // 不输出 map 文件
  productionSourceMap: false
  

}